#ifndef SWE_SETTINGS_HPP
#define SWE_SETTINGS_HPP

#include "sweTraits.hpp"
#include "reconstruction_types.hpp"
#include "sweSolverTypes_fwd.hpp"

namespace hms
{

using MeshTypeDummy = UniMesh;
using SWESolverDummy = SWESolver<UniMesh>;

struct SWESettings : public SolverSettings<SWESolverDummy> {
	using RemAdjust = swe::RemAdjust;

	FluxScheme fluxScheme { FluxScheme::HLLC };

	bool useMuscl {false};
	bool useFriction {true};
	bool useAtomicWrite {true};

	scalar maxCourant {0.5};
	LimiterFunction limiterFunction;

	bool useIntegratedBlockLoop {false};
	bool setBlocksizesManually {false};
	RemAdjust blocksizeAdjustment { RemAdjust::none };
	double blocksizeThreshold {0.95};
	Index blocksizeX {64};
	Index blocksizeY {64};
};

} // namespace hms


#endif